package com.wl.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.wl.entity.Apply_01;
import com.wl.entity.Approve_02;

public interface Apply_01Mapper {
	int deleteByPrimaryKey(Integer id);

	/**
	 * 01环节提交给表里增加数据
	 * 
	 * @param record
	 * @return
	 */
	int insert(Apply_01 record);

	int insertSelective(Apply_01 record);

	Apply_01 selectByPrimaryKey(Integer id);

	int updateByPrimaryKeySelective(Apply_01 record);

	int updateByPrimaryKey(Apply_01 record);

	/**
	 * 根据编号查询数据，用于其他环节审批时展示数据用
	 * 
	 * @param flowid
	 * @return
	 */
	public Apply_01 selectByflowid(String flowid);

	/**
	 * 根据flowid修改流程状态，用于驳回的流程再次提交
	 * 
	 * @param record
	 * @return
	 */
	public boolean updateStatusByFlowid(Apply_01 record);

	/**
	 * 根据flowid修改流程状态，用于被驳回的流程
	 * 
	 * @param record
	 * @return
	 */
	public boolean updateBackByFlowid(Apply_01 record);

	/**
	 * 按照编号查找该处理人当前未处理流程 分页
	 * 
	 * @param applyno
	 * @return
	 */
	public List<Apply_01> selectNotHandByName(@Param("applyno") String applyno, @Param("start") int start,
			@Param("limit") int limit);

	/**
	 * 查找未处理的流程的总数
	 * 
	 * @param applyno
	 * @return
	 */
	public int selectCountNotHand(@Param("applyno") String applyno);

	/**
	 * 按照编号查找我提交的流程 分页
	 * 
	 * @param applyno
	 * @return
	 */
	public List<Apply_01> selectMyApplyByName(@Param("applyno") String applyno, @Param("start") int start,
			@Param("limit") int limit);

	/**
	 * 查找我提交的流程的总数
	 * 
	 * @param applyno
	 * @return
	 */
	public int selectCountMyApply(@Param("applyno") String applyno);

	/**
	 * 查找所有申请 分页
	 * 
	 * @param applyno
	 * @return
	 */
	public List<Apply_01> selectAllApply(@Param("start") int start, @Param("limit") int limit);

	/**
	 * 查找所有申请的总数
	 * 
	 * @param applyno
	 * @return
	 */
	public int selectCountAllApply();

	/**
	 * 多条件搜索查询 分页
	 * 
	 * @param applyno
	 * @return
	 */
	public List<Apply_01> selectBySearch(@Param("searchflowid") String searchflowid, @Param("start") int start,
			@Param("limit") int limit, @Param("searchmaterial") String searchmaterial,
			@Param("searchapply") String searchapply, @Param("searchdept") String searchdept,
			@Param("searchdatebegin") String searchdatebegin, @Param("searchdateend") String searchdateend);

	/**
	 * 多条件搜索查询的总数
	 * 
	 * @param applyno
	 * @return
	 */
	public int selectCountBySearch(@Param("searchflowid") String searchflowid,
			@Param("searchmaterial") String searchmaterial, @Param("searchapply") String searchapply,
			@Param("searchdept") String searchdept, @Param("searchdatebegin") String searchdatebegin,
			@Param("searchdateend") String searchdateend);
	
	
	/**
	 * 查询申请数量
	 * @return
	 */
	public int getCountByApplyOne();
	
	
	/**
	 * 按照部门查找申请单数  欢迎页面柱状图
	 * @param deptname
	 * @return
	 */
	public int getCountByDept(String deptname);
	
	/**
	 * 按照部门查找用料总数  欢迎页面环形图
	 * @param deptname
	 * @return
	 */
	public int getmetrialCountByDept(String deptname);

}